package dao;

import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import daosbd.DaoGenericoJPA;

import excecoes.ChaveJaExisteException;
import excecoes.DAOException;

import allaboutmybook.ComentarioDeForum;
import allaboutmybook.TopicoDeForum;

public class DaoConcretoForum extends DaoGenericoJPA<TopicoDeForum> implements DaoForum
{
	
	
	
	public DaoConcretoForum()
	{
		
		
		
	}
	
	public void adicionarTopicoDeForum(TopicoDeForum novoTopico) throws ChaveJaExisteException, DAOException
	{
		try
		{
			String tituloDoTopico = novoTopico.getTituloTopicodeForum();
			TopicoDeForum topicoJahExistente = this.encontrarPorId(tituloDoTopico);
			if(topicoJahExistente != null)
			{
				throw new ChaveJaExisteException();
			}
			else
			{
				this.adicionarEntidade(novoTopico);
			}
		}
		catch(DAOException exc)
		{
			throw new DAOException(exc);
		}
		
		
	}
	
	public void removerTopicoDeForum(String tituloTopico) throws DAOException
	{
		try
		{
			this.removerEntidade(tituloTopico);
		}
		catch(DAOException exc)
		{
			throw new DAOException(exc);
		}
	}
	
	public LinkedList<String> pegarTitulosTopicosDeForum() throws DAOException
	{
		
		try
		{
			@SuppressWarnings("unchecked")
			List<TopicoDeForum> conjuntoTopicosDeForums = this.encontrarTodos();
			
			Iterator<TopicoDeForum> iteraConjuntoTitulosTopicos = conjuntoTopicosDeForums.iterator();
			LinkedList<String> listaTitulosTopicosDeForum = new LinkedList<String>();
			while(iteraConjuntoTitulosTopicos.hasNext() == true)
			{
				TopicoDeForum unicoTopico = iteraConjuntoTitulosTopicos.next();
				String tituloUnicoTopico = unicoTopico.getTituloTopicodeForum();
				listaTitulosTopicosDeForum.add(tituloUnicoTopico);
				
			}
			
			return listaTitulosTopicosDeForum;
		}
		catch(DAOException exc)
		{
			throw new DAOException(exc);
		}
		
	}
	
	public TopicoDeForum pegarTopicoDeForum(String tituloTopicoDeForum) throws DAOException
	{
		try
		{
			TopicoDeForum objetoTopicoDeForum = this.encontrarPorId(tituloTopicoDeForum);
			return objetoTopicoDeForum;
		}
		catch(DAOException exc)
		{
			throw new DAOException(exc);
		}
	}

	
	

}
